# 推导式
"""
列表推导式、字典推导式、集合推导式
    旧列表－－－－－＞新列表
格式
    列表推导式：
        格式：［表达式　for 变量 in 旧列表］ 或者［表达式　for 变量 in 旧列表 if 条件］
    双层嵌套：
        ［表达式　for 变量 in 旧列表 if 条件 for 变量 in 旧列表 if 条件］
"""

print("列表推导式".center(30, "*"))
names = ["sanduo", 'lily', 'jack', 'bob']

# 过滤长度小于3的任命

result = [name for name in names if len(name) > 3]
print(result)

# 首字母大写
capitalize_result = [name.capitalize() for name in names if len(name) > 3]
print(capitalize_result)
# for if


# 1-100之间能被3整除的，组成一个列表

new_list = [i for i in range(1, 101) if i % 3 == 0 and i % 5 == 0]

print(new_list)

# for if  for if
# 0-10之间的偶数和奇数组成元组列表，例如：（偶数,奇数）
# new_tuple = [tup for i in range(5) if i % 2 == 0]
# new_tuple = [tup for j in range(5) if j % 2 == 1]
new_tuple = [(i, j) for i in range(10) if i % 2 == 0 for j in range(10) if j % 2 == 1]
print(new_tuple)

# lst = [[1,2,3],[4,5,6],[7,8,9],[1,3,5]] ->[3,6,9,5]
lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [1, 3, 5]]
new_lst = [x[-1] for x in lst]
print(new_lst)

# if eles
dic1 = {'name': 'tom', 'salary': 9000}
dic2 = {'name': 'lucy', 'salary': 4000}
dic3 = {'name': 'jack', 'salary': 10000}
dic4 = {'name': 'lily', 'salary': 3000}

lst2 = [dic1, dic2, dic3, dic4]

#  如果薪资大于5000，+200；低于等于5000 +500；

lst3_new = [item["salary"] + 500 if item["salary"] <= 5000 else item["salary"] + 200 for item in lst2]
print(lst3_new)

lst4_new = [item.get("salary") + 500 if item.get("salary") <= 5000 else item.get("salary") + 200 for item in lst2]
print(lst4_new)

lst5_new = [{'name': item['name'], 'salary': item["salary"] + 500} if item["salary"] <= 5000
            else {'name': item['name'], 'salary': item["salary"] + 200} for item in lst2]

print(lst5_new)

# 集合推导式
